package com.atguigu.tingshu.album.config;

import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Minio配置类：初始化客户端，放入Spring容器中
 * 注解 @Configuration：标识该类是一个配置类，替代传统的 XML 配置，用于配置Minio客户端对象
 * 注解 @Configurable：允许 非 Spring 管理的类（如通过 new 创建的对象）也能被 Spring 注入依赖。
 *
 * @author Taeyang
 * @date 2025/4/23
 */
@Configuration
public class MinioConfig {

    private final MinioConstantProperties minioConstantProperties;

    @Autowired
    public MinioConfig(MinioConstantProperties minioConstantProperties) {
        this.minioConstantProperties = minioConstantProperties;
    }

    /**
     * 初始化创建Minio客户端对象
     *
     * @return Minio客户端对象
     */
    @Bean
    public MinioClient minioClient() {
        // 初始化Minio的客户端对象
        return MinioClient.builder()
                // MinIO服务端地址和端口
                .endpoint(minioConstantProperties.getEndpointUrl())
                // 访问密钥和密钥
                .credentials(minioConstantProperties.getAccessKey(), minioConstantProperties.getSecreKey())
                .build();
    }
}
